package Mapas;



import java.awt.Color;
import java.awt.Graphics;


/**
 * Rectangulo para ser arrastrado en un LienzoParaArrastrarFiguras
 *
 * @author Victor
 *
 */
public class Rectangulo implements InterfaceFigura
{
    /**
     * x del rectangulo, esquina superior izquierda
     */
    private int x;

    /**
     * y del rectangulo, esquina superior izquierda
     */
    private int y;

    /**
     * ancho del rectangulo
     */
    private int ancho;

    /**
     * alto del rectangulo
     */
    private int alto;

    /**
     * nombre de la lista del rectangulo
     */    
    private String lista;

    /**
     * nombre de la lista del rectangulo
     */    
    private String [] tareas;
    
    private int tope;

    /**
     * Crea un nuevo objeto Rectangulo.
     *
     * @param x de la esquina superior izquierda
     * @param y de la esquina superior izquierda
     * @param alto del rectangulo
     * @param ancho del rectangulo
     * @param color de relleno del del rectangulo
     */
    public Rectangulo(int x, int y, int alto, int ancho, String lista,String[]tareas, int tope)
    {
        this.x = x;
        this.y = y;
        this.ancho = ancho;
        this.alto = alto;
        this.lista = lista;
        this.tareas = tareas;
        this.tope = tope;
    }

    /**
     * Dibuja el rectangulo en el Graphics que se le pasa
     *
     * @param g Graphics en el que dibujar
     */
    public void dibujate(Graphics g)
    {
    	this.alto = 21+(tope*17);
    	
    	g.setFont(new java.awt.Font("Tahoma", 1, 15));
        g.setColor(Color.lightGray);
        g.fillRect(x, y, ancho, alto);
        g.setColor(Color.black);
        g.drawChars(recorte(lista), 0, recorte(lista).length, x+5, y+15);
        g.drawLine(x, y+17, x+ancho, y+17);
        g.drawRect(x, y, ancho, alto);
    	g.setFont(new java.awt.Font("Tahoma", 0, 12));
        for(int i=0;i<tareas.length && tareas[i]!=null && i<tope;i++){
        	char[] txt = recorte(tareas[i]);
            g.drawChars(txt, 0, txt.length, x+10, y+34+(i*17));
        }
    }
    
    private char[] recorte(String texto){
    	char []txt = texto.toCharArray();
    	int a = (ancho-20)/6;
    	int lim = a-3;
    	char []dev = new char[a];
    	if(a>txt.length){
        	dev = new char[txt.length];
        	lim = dev.length;
    	}
    	else{
        	dev[dev.length-3]='.';
        	dev[dev.length-2]='.';
        	dev[dev.length-1]='.';
        }
    	for(int i = 0;i < lim && i<txt.length;i++)
    		dev[i]=txt[i];
    	return dev;
    }

    /**
     * Devuelve true si x,y esta dentro del rectangulo, false en caso contrario
     *
     * @param x del punto que se quiere saber si esta dentro del rectangulo
     * @param y del punto que se quiere saber si esta dentro del rectangulo
     *
     * @return true si x,y esta dentro del rectangulo
     */
    public boolean estaDentro(int x, int y)
    {
        if (
            (x >= this.x) && (x <= (this.x + ancho)) && (y >= this.y) &&
                (y <= (this.y + alto)))
        {
            return true;
        }

        return false;
    }

    /**
     * Fija la esquina superior izquierda del rectangulo
     *
     * @param x 
     * @param y 
     */
    public void setPosicion(int x, int y)
    {
        this.x = x;
        this.y = y;
    }

    /**
     * Devuelve la x de la esquina superior izquierda del rectangulo
     *
     * @return x de la esquina superior izquierda del rectangulo
     */
    public int getX()
    {
        return x;
    }
    
    /**
     * Devuelve la lista del rectangulo
     *
     * @return lista del rectangulo
     */
    public String getlista()
    {
        return lista;
    }
    
    /**
     * Devuelve el ancho del rectangulo
     *
     * @return ancho del rectangulo
     */
    public int getAncho()
    {
        return ancho;
    }
    
    /**
     * Devuelve el alto del rectangulo
     *
     * @return alto del rectangulo
     */
    public int getAlto()
    {
        return alto;
    }

    /**
     * Devuelve la y de la esquina superior izquierda del rectangulo
     *
     * @return y de la esquina superior izquierda del rectangulo
     */
    public int getY()
    {
        return y;
    }
}
